﻿using BUGCOME.Infrastructure.Attribute;
using BUGCOME.Model.Auth;

using BUGCOME.Service.Auth.IServices;

/// <summary>
/// 用户团队服务实现类
/// 继承自基础服务类BaseService，并实现IUserTeamService接口，处理用户团队相关业务逻辑
/// </summary>
[AppService(ServiceType = typeof(IUserTeamService), ServiceLifetime = LifeTime.Transient)]
public class UserTeamService : BaseService<UserTeam>, IUserTeamService
{
    /// <summary>
    /// 异步添加用户团队信息
    /// </summary>
    /// <param name="userTeam">待添加的用户团队信息实体</param>
    /// <returns>添加成功后的数据实体（包含数据库自动生成的字段，如ID等）</returns>
    /// <exception cref="Exception">当用户团队信息已存在时抛出异常</exception>
    public async Task<UserTeam> AddUserTeamAsync(UserTeam userTeam)
    {
        // 检查该用户的团队信息是否已存在（通过UserId唯一标识，确保一个用户只能有一条团队记录）
        bool isExist = await Queryable().AnyAsync(u => u.UserId == userTeam.UserId);

        // 若已存在则抛出异常，防止重复添加用户团队信息
        if (isExist)
        {
            throw new Exception("该用户的团队信息已存在，无法重复添加！");
        }

        // 将用户团队信息插入数据库，并返回插入后的实体（包含数据库生成的主键等信息）
        return await Insertable(userTeam).ExecuteReturnEntityAsync();
    }
}